home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].zip / Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].do / SOLAR.bas < prev    next >
BASIC Source File  |  1996-12-24  |  7KB  |  205 lines

  1. 10  REM  ***************************
  2. 12  REM  *                         *
  3. 14  REM  * SOLAR SYSTEM SIMULATION *
  4. 16  REM  *    DAVID A. PARTYKA     *
  5. 18  REM  *                         *
  6. 20  REM  *          SOLAR          *
  7. 22  REM  *                         *
  8. 24  REM  *   COPYRIGHT (C) 1981    *
  9. 25  REM  *     MICRO INK, INC.     *
  10. 26  REM  *  CHELMSFORD, MA 01824   *
  11. 27  REM  *   ALL RIGHTS RESERVED   *
  12. 28  REM  *                         *
  13. 29  REM  ***************************
  14. 30  REM 
  15. 80  GOTO 1000
  16. 90  REM  (100-110) PLOT X AND Y VALUES
  17. 100  HPLOT X,Y
  18. 110  RETURN 
  19. 150  REM  (200-300) CALCULATE THE X AND YPLANET POSITIONS
  20. 200 D = Z - INT(Z/SRD) *SRD
  21. 205  REM  D IS FOR DAYS
  22. 210 B = Q -(D/SRD *Q2)
  23. 220 RV = A -(P/(1 +E * COS(B)))
  24. 225  REM  RV IS THE RADIUS VECTOR OR DISTANCE FROM THE SUN TO THE PLANET
  25. 230 V = PE/RV -EZ
  26. 240  IF V =  >1  THEN V = VL
  27. 245  IF V =  < -1  THEN V =  -VL
  28. 250 V1 =  - ATN(V/ SQR( -V *V +1)) +T
  29. 255  REM  V1 IS THE ANGLE THAT THE PLANET LIES FROM THE SUN. THE 0 POINT BEING AT THE RIGHT, INCREASING COUNTERCLOCKWISE.
  30. 260  IF D <SRD/2  THEN V1 = Q2 -V1
  31. 270 V1 = V1 +J
  32. 280 X =  COS(V1) *RV:Y =  - SIN(V1) *RV *FA
  33. 290 X = X *TT +X1:Y = Y *TT +Y1
  34. 300  RETURN 
  35. 900  REM  (1000) DISPLAY PRIMARY PAGE, SET TEXT MODE
  36. 1000  POKE  -16300,0: POKE  -16303,0
  37. 1010 T = 1.5708
  38. 1020 Q = 3.14159265
  39. 1030 Q2 = 6.2831853
  40. 1040 VL = .99999999
  41. 1050 FA = 29/32
  42. 1055  REM  FA IS THE RATIO OF X TO Y TO PLOT A CIRCLE AN THE APPLE INSTEAD OF AN OVAL
  43. 1060 X1 = 140:Y1 = 96
  44. 1700  HOME : PRINT : PRINT : PRINT : PRINT 
  45. 1800  PRINT "DO YOU WANT TO DISPLAY "
  46. 1810  PRINT : PRINT "THE SAME PLANETS AS YOUR LAST RUN"
  47. 1815  PRINT : INPUT "Y OR N ";A$
  48. 1820  PRINT : PRINT 
  49. 1830  IF A$ = "N"  THEN 2000
  50. 1840  IF A$ < >"Y"  THEN 1800
  51. 1850  IF S1 < >0  THEN 4000
  52. 1855  PRINT : PRINT 
  53. 1860  PRINT : PRINT "YOU HAVEN'T PICKED THE PLANETS YET"
  54. 1870  PRINT : PRINT : PRINT 
  55. 2000  PRINT "CHOOSE THE PLANETS YOU WANT TO DISPLAY"
  56. 2005  PRINT 
  57. 2010  PRINT "ENTER A 1 FOR YES AND A 0 FOR NO"
  58. 2011  PRINT 
  59. 2012  REM (2020-2079) GET SPECIFIC VALUES FOR EACH PLANET
  60. 2013  REM  S1=ORBITAL PERIOD: P1=A1*(1-E1*E1)/2
  61. 2014  REM  E1=ECCENTRICITY: U1=P1/E1:K1=1/E1
  62. 2015  REM  REM A1= MINIMUM AND MAXIMUM DISTANCE FROM THE SUN
  63. 2016  REM  J1=LONGITUDE OF PERIHELION IN RADIANS
  64. 2017  REM  W1= DAYS FROM 0 DEGREES TO PERIHELION FOR 1980
  65. 2018  REM  TT=SCALING FACTOR TO USE FULL PLOTTING AREA IF SELECTED PLANETS ARE DISPLAYED
  66. 2020  INPUT "DISPLAY MERCURY   ";ME
  67. 2021 S1 = 87.969
  68. 2022 E1 = .2056
  69. 2023 A1 = 43.403 +28.597
  70. 2024 P1 = A1 *(1 -E1 *E1)/2
  71. 2025 K1 = 1/E1
  72. 2026 U1 = P1/E1
  73. 2027 J1 = 77.1 *Q/180
  74. 2028 W1 = 37.58
  75. 2029  IF ME = 1  THEN TT = 2.3
  76. 2030  INPUT "DISPLAY VENUS     ";VE
  77. 2031 S2 = 224.701
  78. 2032 E2 = .0068
  79. 2033 A2 = 67.726 +66.813
  80. 2034 P2 = A2 *(1 -E2 *E2)/2
  81. 2035 K2 = 1/E2
  82. 2036 U2 = P2/E2
  83. 2037 J2 = 131.3 *Q/180
  84. 2038 W2 = 140.5
  85. 2039  IF VE = 1  THEN TT = 1.5
  86. 2040  INPUT "DISPLAY EARTH     ";EA
  87. 2041 S3 = 365.256
  88. 2042 E3 = .0167
  89. 2043 A3 = 94.555 +91.445
  90. 2044 P3 = A3 *(1 -E3 *E3)/2
  91. 2045 K3 = 1/E3
  92. 2046 U3 = P3/E3
  93. 2047 J3 = 102.6 *Q/180
  94. 2048 W3 =  -3
  95. 2049  IF EA = 1  THEN TT = 1.05
  96. 2050  INPUT "DISPLAY MARS      ";MA
  97. 2051 S4 = 686.980
  98. 2052 E4 = .0934
  99. 2053 A4 = 154.936 +128.471
  100. 2054 P4 = A4 *(1 -E4 *E4)/2
  101. 2055 K4 = 1/E4
  102. 2056 U4 = P4/E4
  103. 2057 J4 = 335.7 *Q/180
  104. 2058 W4 = 289
  105. 2059  IF MA = 1  THEN TT = .6
  106. 2060  INPUT "DISPLAY JUPITER   ";JU
  107. 2061 S5 = 4332.125
  108. 2062 E5 = .0478
  109. 2063 A5 = 507.046 +460.595
  110. 2064 P5 = A5 *(1 -E5 *E5)/2
  111. 2065 K5 = 1/E5
  112. 2066 U5 = P5/E5
  113. 2067 J5 = 13.6 *Q/180
  114. 2068 W5 = 1604
  115. 2069  IF JU = 1  THEN TT = .19
  116. 2070  INPUT "DISPLAY SATURN    ";SA
  117. 2071 S6 = 10825.863
  118. 2072 E6 = .0555
  119. 2073 A6 = 937.541 +838.425
  120. 2074 P6 = A6 *(1 -E6 *E6)/2
  121. 2075 K6 = 1/E6
  122. 2076 U6 = P6/E6
  123. 2077 J6 = 95.5 *Q/180
  124. 2078 W6 = 2115
  125. 2079  IF SA = 1  THEN TT = .1
  126. 3900  HOME : PRINT : PRINT 
  127. 4000  PRINT : PRINT "DO YOU WANT ": PRINT 
  128. 4010  INPUT "POINT (0) OR CONTINUOUS (1) PLOTS ";TY
  129. 4015  IF TY < >0  AND TY < >1  THEN 4000
  130. 4020  PRINT : PRINT : PRINT 
  131. 4030  PRINT : PRINT "DO YOU WANT TO START AT": PRINT 
  132. 4040  PRINT "A SPECIFIC DATE (0) ": PRINT 
  133. 4050  INPUT "OR THE BEGINNING OF THE YEAR (1) ";DT
  134. 4051  IF DT < >0  AND DT < >1  THEN 4020
  135. 4052  IF DT = 1  THEN 4060
  136. 4053  PRINT : PRINT : PRINT 
  137. 4054  INPUT "ENTER # OF DAYS SINCE JAN 0, 1980 ";DE
  138. 4057 Z1 = DE
  139. 4060  PRINT : PRINT : INPUT "ENTER # OF DAYS TO PLOT ";DN
  140. 4070  PRINT : PRINT : PRINT 
  141. 4080  INPUT "ENTER # OF DAYS BETWEEN PLOTS ";DA
  142. 4082  IF DA < >0  THEN 4800
  143. 4084  PRINT : PRINT 
  144. 4086  PRINT "0 NOT ALLOWED": GOTO 4070
  145. 4090  REM  4800 INIT HIGH RES, FULL SCREEN, PAGE 2
  146. 4800  HGR2 
  147. 4802  REM  (4805-4860) PLOT REFERENCE POINTS AND OUTER 10 DEGREE CIRCLE
  148. 4805  HCOLOR= 3
  149. 4810 X = 140:Y = 96: GOSUB 100
  150. 4811 X = 141:Y = 96: GOSUB 100
  151. 4815 X = 248:Y = 96: GOSUB 100
  152. 4820  FOR L1 = 0 TO Q2  STEP 1/36 *Q2
  153. 4830 X = X1 + COS(L1) *105.9
  154. 4840 Y = Y1 - SIN(L1) *105.9 *FA
  155. 4850  GOSUB 100
  156. 4860  NEXT L1
  157. 4900  REM  (5100-5140) SET UP VALUES FOR MERCURY AND PLOT
  158. 5100  IF ME = 0  THEN 5200
  159. 5110 A = A1:P = P1:E = E1:PE = U1:EZ = K1:SRD = S1:J = J1:W = W1:Z = Z1 +W
  160. 5120  GOSUB 200:F1 = X:G1 = Y
  161. 5125  IF TY = 1  THEN 5140
  162. 5130 X = M1:Y = N1: HCOLOR= 0: GOSUB 100
  163. 5140 X = F1:Y = G1:M1 = X:N1 = Y: HCOLOR= 3: GOSUB 100
  164. 5190  REM  (5200-5240) SET UP VALUE FOR VENUS AND PLOT
  165. 5200  IF VE = 0  THEN 5300
  166. 5210 A = A2:P = P2:E = E2:PE = U2:EZ = K2:SRD = S2:J = J2:W = W2:Z = Z1 +W
  167. 5220  GOSUB 200:F2 = X:G2 = Y
  168. 5225  IF TY = 1  THEN 5240
  169. 5230 X = M2:Y = N2: HCOLOR= 0: GOSUB 100
  170. 5240 X = F2:Y = G2:M2 = X:N2 = Y: HCOLOR= 3: GOSUB 100
  171. 5290  REM  (5300-5240) SET UP VALUES FOR EARTH AND PLOT
  172. 5300  IF EA = 0  THEN 5400
  173. 5310 A = A3:P = P3:E = E3:PE = U3:EZ = K3:SRD = S3:J = J3:W = W3:Z = Z1 +W
  174. 5320  GOSUB 200:F3 = X:G3 = Y
  175. 5325  IF TY = 1  THEN 5340
  176. 5330 X = M3:Y = N3: HCOLOR= 0: GOSUB 100
  177. 5340 X = F3:Y = G3:M3 = X:N3 = Y: HCOLOR= 3: GOSUB 100
  178. 5390  REM  (5400-5440) SET UP VALUES FOR MARS AND PLOT
  179. 5400  IF MA = 0  THEN 5500
  180. 5410 A = A4:P = P4::E = E4:PE = U4:EZ = K4:SRD = S4:J = J4:W = W4:Z = Z1 +W
  181. 5420  GOSUB 200:F4 = X:G4 = Y
  182. 5425  IF TY = 1  THEN 5440
  183. 5430 X = M4:Y = N4: HCOLOR= 0: GOSUB 100
  184. 5440 X = F4:Y = G4:M4 = X:N4 = Y: HCOLOR= 3: GOSUB 100
  185. 5490  REM   (5500-5540) SET UP VALUES FOR JUPITER AND PLOT
  186. 5500  IF JU = 0  THEN 5600
  187. 5510 A = A5:P = P5:E = E5:PE = U5:EZ = K5:SRD = S5:J = J5:W = W5:Z = Z1 +W
  188. 5520  GOSUB 200:F5 = X:G5 = Y
  189. 5525  IF TY = 1  THEN 5540
  190. 5530 X = M5:Y = N5: HCOLOR= 0: GOSUB 100
  191. 5540 X = F5:Y = G5:M5 = X:N5 = Y: HCOLOR= 3: GOSUB 100
  192. 5590  REM  (5600-5640) SET UP VALUES FOR SATURN
  193. 5600  IF SA = 0  THEN 6000
  194. 5610 A = A6:P = P6:E = E6:PE = U6:EZ = K6:SRD = S6:J = J6:W = W6:Z = Z1 +W
  195. 5620  GOSUB 200:F6 = X:G6 = Y
  196. 5625  IF TY = 1  THEN 5640
  197. 5630 X = M6:Y = N6: HCOLOR= 0: GOSUB 100
  198. 5640 X = F6:Y = G6:M6 = X:N6 = Y: HCOLOR= 3: GOSUB 100
  199. 6000 Z1 = Z1 +DA
  200. 6100  IF Z1 >DE +DN  THEN 7000
  201. 6200  GOTO 5100
  202. 7000 X = 279:Y = 190: GOSUB 100: INPUT A$
  203. 7050  REM  (7000) PLOT POINT 297 190 TO INDICATE END OF SIMULATION THEN WAIT FOR INPUT OF ANY CHARACTER TO START AGAIN
  204. 7100 Z1 = 0:DE = 0
  205. 7200  GOTO 1000